package com.scs.application.modules.wm.dto;

import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.List;

@Data
@Accessors(chain = true)
public class DeliveryDTO implements Serializable {

    /**
     * 来源类型 scp 供应商平台手动创建的 lms 从lms系统传入的
     */
    private String fromType;

    /**
     * 发货单ID
     */
    private String id;
    /**
     * 医院Id
     */
     private String hospitalId;
     /**
     * 院方名称
     */
    private String hospitalName;

    /**
     * 发货单号
     */
    private String code;

    /**
     * 订单ID
     */
    private String poId;

    /**
     * 采购单号
     */
    private String poCode;

    /**
     * 供应商ID
     */
    private String supplierId;

    /**
     * 供应商名称
     */
    private String supplierName;

    /**
     * 是否寄售
     */
    private Integer isConsignment;

    /**
     * 是否一物一码
     */
    private Integer isOneThingOneYard;

    /*** 送达日期 */
    private String gmtRequireLatestDelivery;

    /**
     * 预计最早送达日期
     */
    private String gmtExceptedEarliestDelivery;

    /**
     * 预计最晚送达日期
     */
    private String gmtExceptedLatestDelivery;

    /**
     * 实际送达日期
     */
    private String gmtActualDelivery;

    /**
     * 订单金额(元)
     */
    private Double orderAmount;

    /**
     * 发货金额(元)
     */
    private Double deliveryAmount;

    /**
     * 发货时间
     */
    private String gmtDelivery;

    /**
     * 状态
     */
    private Integer status;

    /**
     * 订单来源标识
     */
    private String sourceKey;

    /**
     * 采购分类 matr:耗材，reagent：试剂，drugs：药品,package：跟台包
     */
    private String purchaseType;

    /**
     * 订单是否关闭
     */
    private Integer isClosed;

    /**
     * 发货温度
     */
    private Double temperature;

    /**
     * 到货温度
     */
    private Double arrivalTemperature;

    /**
     * 试剂组id
     */
    private String reagentTeamId;

    /**
     * 需求科室id
     */
    private String deptId;

    /**
     *  收货仓库代码
     */
    private String warehouseCode;

    /**
     * 发货明细列表
     */
    private List<DeliveryItemDTO> items;

    @Data
    public static class DeliveryItemDTO {
        /**
         * 发货单ID
         */
        private String deliveryId;

        /**
         * 订单明细ID
         */
        private String poItemId;

        /**
         * 商品规格ID
         */
        private String materialSpecId;

        /**
         * 商品编码
         */
        private String materialCode;

        /**
         * 商品代码
         */
        private String materialErpCode;

        /**
         * 商品名称
         */
        private String materialName;

        /**
         * 商品通用名
         */
        private String materialTradeName;

        /**
         * 规格
         */
        private String materialSpec;

        /**
         * 厂商名称
         */
        private String manufacturerName;

        /**
         * 剂型
         */
        private String form;

        /**
         * 价格
         */
        private Double price;

        /**
         * 应发数量
         */
        private Double shouldDeliveryQty;

        /**
         * 已发数量
         */
        private Double deliveredQty;

        /**
         * 订单单位数量
         */
        private Double orderQty;

        /**
         * 订单包装单位
         */
        private String orderUnit;

        /**
         * 本次实发
         */
        private Double qty;

        /**
         * 小计(元)
         */
        private Double subtotalAmount;

        /**
         * 采购订单明细来源标识
         */
        private String sourceKey;

        /**
         * sns数组
         */
        private String[] sns;

        /**
         * snUdi
         */
        private List<SnUdiDTO> ListSnUdi;

        /**
         * 单位
         */
        private String unit;

        /**
         * 批次
         */
        private String lot;

        // 厂家序号
        private String mfgSn;

        /**
         * 生产日期
         */
        private String productionDate;

        /**
         * 有效日期
         */
        private String expiredDate;

        /**
         * 灭菌日期
         */
        private String sterilizationDate;

        /**
         * 注册证号
         */
        private String certificateNo;

        /**
         * 备注
         */
        private String remark;

        private String udi;

        @Data
        public static class SnUdiDTO {

            private String sn;

            private String udi;
        }
    }
}
